<?php

Yii::import('alertas.models._base.BaseAlerta');

class Alerta extends BaseAlerta {

    const ASIGNADO = '1';
    const NOASIGNADO = '2';
    const EVENTOHOY = '3';
    const TIPO_DELETE = 'DELETE';
    const TIPO_RESTORE = 'RESTORE';
    const leido = 'Leido';

    /**
     * @return Actividad
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public static function label($n = 1) {
        return Yii::t('app', 'Alerta|Alertas', $n);
    }

    public static function listaralertasdashboard($model) {
// Obtener ids de contactos
        $contactos_ids = array();
        foreach ($model->contactos as $contacto)
            $contactos_ids[] = $contacto->id;

// Obtener ids de tareas
        $tareas_ids = array();
        foreach ($model->tareas as $tarea)
            $tareas_ids[] = $tarea->id;

// Obtener ids de oportunidades
        $oportunidades_ids = array();
        foreach ($model->oportunidades as $oportunidad)
            $oportunidades_ids[] = $oportunidad->id;

// Obtener ids de cobranzas
        $cobranzas_ids = array();
        foreach ($model->cobranzas as $cobranza)
            $cobranzas_ids[] = $cobranza->id;

// Obtener ids de eventos
        $eventos_ids = array();
        foreach ($model->eventos as $evento)
            $eventos_ids[] = $evento->id;

// Obtener ids de notas
        $notas_ids = array();
        foreach ($model->notas as $nota)
            $notas_ids[] = $nota->id;

        /**
         * Obtener las actividades
         */
        $alertas = array();

        $query = Yii::app()->db->createCommand()
                ->select()
                ->from('alerta')
                ->where(array('and', 'entidad_tipo = :cuenta', 'entidad_id = :entidad_id'), array(':cuenta' => $model->tableName(), ':entidad_id' => $model->id))
                ->orWhere(array('and', 'entidad_tipo = :contacto', array('in', 'entidad_id', $contactos_ids)), array(':contacto' => Contacto::model()->tableName()))
                ->orWhere(array('and', 'entidad_tipo = :tarea', array('in', 'entidad_id', $tareas_ids)), array(':tarea' => Tarea::model()->tableName()))
                ->orWhere(array('and', 'entidad_tipo = :oportunidad', array('in', 'entidad_id', $oportunidades_ids)), array(':oportunidad' => Oportunidad::model()->tableName()))
                ->orWhere(array('and', 'entidad_tipo = :cobranza', array('in', 'entidad_id', $cobranzas_ids)), array(':cobranza' => Cobranza::model()->tableName()))
                ->orWhere(array('and', 'entidad_tipo = :evento', array('in', 'entidad_id', $eventos_ids)), array(':evento' => Evento::model()->tableName()))
                ->orWhere(array('and', 'entidad_tipo = :nota', array('in', 'entidad_id', $notas_ids)), array(':nota' => Nota::model()->tableName()))
                ->order('fecha DESC');


        $alertas = $query->queryAll();


        return $alertas;
    }

    public function scopes() {

        return array(
            'activos' => array(
                'condition' => (Yii::app()->user->isSuperAdmin) ? 'usuario_id = ' . Yii::app()->user->id . '' : 'leido = :leido',
            ),
        );
    }

    public function attributeLabels() {
        return array_merge(parent::attributeLabels(), array(
            'tipo_codigo' => Yii::t('app', 'Asignación'),
            'entidad_tipo' => Yii::t('app', 'Asignado a:'),
            'entidad_id' => Yii::t('app', 'Nombre'),
            'visitado' => Yii::t('app', 'Visitado'),
            'fecha_creacion' => Yii::t('app', 'Creado'),
        ));
    }
/**
 * @author Mauricio Chamorro <mchamorro@tradesystem.com.ec>
 * Metodo estático que permite registrar alertas asignadas
 * @param type $model modelo
 * @param type $owner_id recibe un usuario, puede ser opcional
 * @param type $tipo tipo
 * @return type Boolean Indica si se guardo (true) o no (false) la alerta asignada
 */
    public static function registraralertaa($model,$tipo, $owner_id=null) {
        $alerta = new Alerta;
        $alerta->attributes = array(
            'entidad_tipo' => $model->tableName(),
            'entidad_id' => $model->id,
            'tipo_codigo' => $tipo,
            'usuario_id' => ($owner_id?$owner_id:$model->owner_id),
//            'usuario_id' => $model->owner_id,
            'leido' => '0',
            'visitado' => '0',
            'fecha_creacion' => $model->fecha_creacion,
        );
        return $alerta->save();
    }

    public static function registraralertana($model, $asignadoactual, $tipo) {
        $alerta = new Alerta;
        $alerta->attributes = array(
            'entidad_tipo' => $model->tableName(),
            'entidad_id' => $model->id,
            'tipo_codigo' => $tipo,
            'usuario_id' => $asignadoactual,
            'leido' => '0',
            'visitado' => '0',
            'fecha_creacion' => $model->fecha_actualizacion,
        );

        return $alerta->save();
    }

    public static function registraralertadia($entidad, $entidadid, $usuario, $tipo) {
        $alerta = new Alerta;
        $alerta->attributes = array(
            'entidad_tipo' => $entidad,
            'entidad_id' => $entidadid,
            'tipo_codigo' => $tipo,
            'usuario_id' => $usuario,
            'leido' => '0',
            'visitado' => '0',
            'fecha_creacion' => date("Y-m-d  H:m:s"),
        );
        $alerta->save();
    }

    public static function urlmodulo($entidad_tipo, $entidad_id, $id) {
        if ($entidad_tipo == 'cuenta') {
            $UrlModulo = Yii::app()->request->baseUrl . '/crm/cuenta/view?id=' . $entidad_id . '&visitado=' . $id;
        } elseif ($entidad_tipo == 'contacto') {
            $UrlModulo = Yii::app()->request->baseUrl . '/crm/contacto/view?id=' . $entidad_id . '&visitado=' . $id;
        } elseif ($entidad_tipo == 'campania') {
            $UrlModulo = Yii::app()->request->baseUrl . '/campanias/view?id=' . $entidad_id . '&visitado=' . $id;
        } elseif ($entidad_tipo == 'oportunidad') {
            $UrlModulo = Yii::app()->request->baseUrl . '/oportunidades/oportunidad/view?id=' . $entidad_id . '&visitado=' . $id;
        } elseif ($entidad_tipo == 'cobranza') {
            $UrlModulo = Yii::app()->request->baseUrl . '/cobranzas/cobranza/view?id=' . $entidad_id . '&visitado=' . $id;
        } elseif ($entidad_tipo == 'incidencia') {
            $UrlModulo = Yii::app()->request->baseUrl . '/incidencias/incidencia/view?id=' . $entidad_id . '&visitado=' . $id;
        } elseif ($entidad_tipo == 'tarea') {
            $UrlModulo = Yii::app()->request->baseUrl . '/tareas/tarea/view?id=' . $entidad_id . '&visitado=' . $id;
        } elseif ($entidad_tipo == 'evento') {
            $UrlModulo = Yii::app()->request->baseUrl . '/eventos/evento/view?id=' . $entidad_id . '&visitado=' . $id;
        } elseif ($entidad_tipo == 'nota') {
            $UrlModulo = Yii::app()->request->baseUrl . '/notas/nota/view?id=' . $entidad_id . '&visitado=' . $id;
        }
        return $UrlModulo;
    }

    public static function iconmodulo($entidad_tipo) {
        if ($entidad_tipo == 'cuenta') {
            $IconModulo = 'icon-briefcase';
        } elseif ($entidad_tipo == 'contacto') {
            $IconModulo = 'icon-group';
        } elseif ($entidad_tipo == 'campania') {
            $IconModulo = 'icon-rocket';
        } elseif ($entidad_tipo == 'oportunidad') {
            $IconModulo = 'icon-tags';
        } elseif ($entidad_tipo == 'cobranza') {
            $IconModulo = 'icon-money';
        } elseif ($entidad_tipo == 'incidencia') {
            $IconModulo = 'icon-fire-extinguisher';
        } elseif ($entidad_tipo == 'tarea') {
            $IconModulo = 'icon-tasks';
        } elseif ($entidad_tipo == 'evento') {
            $IconModulo = 'icon-calendar';
        } elseif ($entidad_tipo == 'nota') {
            $IconModulo = 'icon-edit-sign';
        }

        return $IconModulo;
    }

    public static function iconcolor($entidad_tipo) {
        if ($entidad_tipo == 'cuenta') {
            $IconModulo = 'f37b53';
        } elseif ($entidad_tipo == 'contacto') {
            $IconModulo = '74B749';
        } elseif ($entidad_tipo == 'oportunidad') {
            $IconModulo = '0DAED3';
        } elseif ($entidad_tipo == 'cobranza') {
            $IconModulo = 'FFB400';
        } elseif ($entidad_tipo == 'incidencia') {
            $IconModulo = '9d4a9c';
        } elseif ($entidad_tipo == 'tarea') {
            $IconModulo = 'de577b';
        } elseif ($entidad_tipo == 'evento') {
            $IconModulo = '8b140f';
        } elseif ($entidad_tipo == 'nota') {
            $IconModulo = '34afbd';
        }

        return $IconModulo;
    }

    public static function clickalerta($entidad_tipo) {
        if ($entidad_tipo == 'cuenta') {
            $IconModulo = 'orange';
        } elseif ($entidad_tipo == 'contacto') {
            $IconModulo = 'green';
        } elseif ($entidad_tipo == 'campania') {
            $IconModulo = 'black';
        } elseif ($entidad_tipo == 'oportunidad') {
            $IconModulo = 'purple';
        } elseif ($entidad_tipo == 'cobranza') {
            $IconModulo = 'blue';
        } elseif ($entidad_tipo == 'incidencia') {
            $IconModulo = 'black';
        } elseif ($entidad_tipo == 'tarea') {
            $IconModulo = 'red';
        } elseif ($entidad_tipo == 'evento') {
            $IconModulo = 'red';
        } elseif ($entidad_tipo == 'nota') {
            $IconModulo = 'red';
        }

        return $IconModulo;
    }

    public static function marcarvisitado($id) {
        $Alerta = Alerta::model()->findByPk($id);
        if ($Alerta) {
            $Alerta->leido = 1;
            $Alerta->visitado = 1;
            $Alerta->save();
        }
    }

    public static function marcarleido($id) {
        $Alerta = Alerta::model()->findByPk($id);
        if ($Alerta) {
            $Alerta->leido = 1;
            $Alerta->visitado = 1;
            $Alerta->save();
        }
    }

    public static function marcarleidodesdeboton($id) {
        $Alerta = Alerta::model()->findByPk($id);
        if ($Alerta) {
            $Alerta->leido = 1;
            $Alerta->save();
        }
    }

    public static function marcarleidoall() {
        Alerta::model()->updateAll(array('leido' => 0));
    }

    public static function consultaalerta() {
        return Yii::app()->db->createCommand()
                        ->select("*")
                        ->from("alerta")
                        ->where("usuario_id = :user_id", array(':user_id' => Yii::app()->user->id))
                        ->order('id DESC')
                        ->queryAll();
    }

    public static function contaralertas() {
        $datos = Yii::app()->db->createCommand()
                ->select()
                ->from("alerta")
                ->where("usuario_id = :user_id", array(':user_id' => Yii::app()->user->id))
                ->andWhere("leido = 0")
                ->queryAll();

        return count($datos);
    }
    public static function contaralertasleidas() {
        $datos = Yii::app()->db->createCommand()
                ->select()
                ->from("alerta")
                ->where("usuario_id = :user_id", array(':user_id' => Yii::app()->user->id))
                ->queryAll();

        return count($datos);
    }

    public static function notificaralertas($consultaalerta) {

        $contar = 0;
        foreach ($consultaalerta as $key => &$value) {
            $UrlModulo = Alerta::UrlModulo($value["entidad_tipo"], $value["entidad_id"], $value["id"]);
            $IconModulo = Alerta::IconModulo($value["entidad_tipo"]);
            $ColorModulo = Alerta::IconColor($value["entidad_tipo"]);
            //  echo $UrlModulo;
            $contar = $contar + 1;
            if ($contar == '6') {
                break;
            }
            if ($value["tipo_codigo"] == 1) {
                if ($value["visitado"] == 0) {
                    echo '<li id="clic' . $value["id"] . '" class="no_visitado"><a href="' . $UrlModulo . '"><span class=""><i class="' . $IconModulo . '"></i></span><strong> Asignado a una nueva <font color="' . $ColorModulo . '">' . ucfirst($value["entidad_tipo"]) . '</font></strong>
                  <span class="small italic">' . Util::nicetime($value["fecha_creacion"]) . '</span></a></li>';
                } else {
                    echo '<li id="clic' . $value["id"] . '"><a href="' . $UrlModulo . '"><span class=""><i class="' . $IconModulo . '"></i></span> Asignado a una nueva ' . ucfirst($value["entidad_tipo"]) . '</font>
                  <div class="small italic">' . Util::nicetime($value["fecha_creacion"]) . '</div></a></li>';
                }
            }
            if ($value["tipo_codigo"] == 2) {
                if ($value["visitado"] == 0) {
                    echo '<li id="clic' . $value["id"] . '" class="no_visitado"><a href="' . $UrlModulo . '"><span class=""><i class="' . $IconModulo . '"></i></span><strong> Se le ha eliminado la asignación de esta <font color="' . $ColorModulo . '">' . ucfirst($value["entidad_tipo"]) . '</font></strong>
                  <span class="small italic">' . $value["fecha_creacion"] . '</span></a></li>';
                } else {
                    echo '<li id="clic' . $value["id"] . '"><a href="' . $UrlModulo . '"><span class=""><i class="' . $IconModulo . '"></i></span> Se le ha eliminado la asignación de esta ' . ucfirst($value["entidad_tipo"]) . '</font>
                  <div class="small italic">' . Util::nicetime($value["fecha_creacion"]) . '</div></a></li>';
                }
            }

            if ($value["tipo_codigo"] == 3) {
                if ($value["entidad_tipo"] == 'evento') {
                    if ($value["visitado"] == 0) {
                        echo '<li id="clic' . $value["id"] . '" class="no_visitado"><a href="' . $UrlModulo . '"><span class=""><i class="' . $IconModulo . '"></i></span><strong> Hoy tienes este <font color="' . $ColorModulo . '">' . ucfirst($value["entidad_tipo"]) . '</font> programado</strong>
                  <span class="small italic">' . $value["fecha_creacion"] . '</span></a></li>';
                    } else {
                        echo '<li id="clic' . $value["id"] . '"><a href="' . $UrlModulo . '"><span class=""><i class="' . $IconModulo . '"></i></span> Hoy tienes este ' . ucfirst($value["entidad_tipo"]) . '</font>programado
                  <div class="small italic">' . Util::nicetime($value["fecha_creacion"]) . '</div></a></li>';
                    }
                } else {
                    if ($value["visitado"] == 0) {
                        echo '<li id="clic' . $value["id"] . '" class="no_visitado"><a href="' . $UrlModulo . '"><span class=""><i class="' . $IconModulo . '"></i></span><strong> Hoy es la fecha limite para esta <font color="' . $ColorModulo . '">' . ucfirst($value["entidad_tipo"]) . '</font></strong>
                  <span class="small italic">' . $value["fecha_creacion"] . '</span></a></li>';
                    } else {
                        echo '<li id="clic' . $value["id"] . '"><a href="' . $UrlModulo . '"><span class=""><i class="' . $IconModulo . '"></i></span> Hoy es la fecha limite para esta ' . ucfirst($value["entidad_tipo"]) . '</font>
                  <div class="small italic">' . Util::nicetime($value["fecha_creacion"]) . '</div></a></li>';
                    }
                }
            }
        }
    }

    public static function marcarleidoboton() {
        $contar = 0;
        $usuario = Yii::app()->user->id;
        $comando = Yii::app()->db->createCommand()
                ->select("*")
                ->from("alerta")
                ->where("usuario_id = $usuario")
                ->andWhere("leido = 0")
                ->order('leido, ID DESC');

        $datos = $comando->queryAll();

        foreach ($datos as $key => &$value) {
            Alerta::MarcarLeidoDesdeBoton($value["id"]);
        }
    }

    public static function listaralertas($consultaalerta) {

        foreach ($consultaalerta as $key => &$value) {
            $UrlModulo = Alerta::UrlModulo($value["entidad_tipo"], $value["entidad_id"], $value["id"]);
            $IconModulo = Alerta::IconModulo($value["entidad_tipo"]);
            $ColorModulo = Alerta::IconColor($value["entidad_tipo"]);
            //  echo $UrlModulo;

            if ($value["tipo_codigo"] == 1) {
                if ($value["visitado"] == 0) {
                    echo '<li id="clic' . $value["id"] . '" class="no_visitado"><i class="' . $IconModulo . '"></i><strong><font size=3><a href="' . $UrlModulo . '"> Asignado a una nueva </font><font size="3" color="' . $ColorModulo . '">' . ucfirst($value["entidad_tipo"]) . '</a></font></strong><span class="small italic"> ' . Util::nicetime($value["fecha_creacion"]) . '</span></li><hr>';
                } else {
                    echo '<li id="clic' . $value["id"] . '" class="no_visitado"><i class="' . $IconModulo . '"></i><font size=3><a href="' . $UrlModulo . '"> Asignado a una nueva ' . ucfirst($value["entidad_tipo"]) . '</a> </font><span class="small italic"> ' . Util::nicetime($value["fecha_creacion"]) . '</span></li><hr>';
                }
            }
            if ($value["tipo_codigo"] == 2) {
                if ($value["visitado"] == 0) {
                    echo '<li id="clic' . $value["id"] . '" class="no_visitado"><i class="' . $IconModulo . '"></i><strong><font size=3> <a href="' . $UrlModulo . '"> Se le ha eliminado la asignación de esta <font color="' . $ColorModulo . '" size=3>' . ucfirst($value["entidad_tipo"]) . '</a></font></strong><span class="small italic"> ' . Util::nicetime($value["fecha_creacion"]) . '</span></li><hr>';
                } else {
                    echo '<li id="clic' . $value["id"] . '" class="no_visitado"><i class="' . $IconModulo . '"></i><font size=3> <a href="' . $UrlModulo . '"> Se le ha eliminado la asignación de esta ' . ucfirst($value["entidad_tipo"]) . '</a></font><span class="small italic"> ' . Util::nicetime($value["fecha_creacion"]) . '</span></li><hr>';
                }
            }
            if ($value["tipo_codigo"] == 3) {
                if ($value["entidad_tipo"] == 'evento') {
                    if ($value["visitado"] == 0) {
                        echo '<li id="clic' . $value["id"] . '" class="no_visitado"><i class="' . $IconModulo . '"></i><strong><font size=3> <a href="' . $UrlModulo . '"> Hoy tienes este <font color="' . $ColorModulo . '" size=3>' . ucfirst($value["entidad_tipo"]) . '</a></font> programado</strong><span class="small italic"> ' . Util::nicetime($value["fecha_creacion"]) . '</span></li><hr>';
                    } else {
                        echo '<li id="clic' . $value["id"] . '" class="no_visitado"><i class="' . $IconModulo . '"></i><font size=3> <a href="' . $UrlModulo . '"> Hoy tienes este ' . ucfirst($value["entidad_tipo"]) . '</a></font> programado<span class="small italic"> ' . Util::nicetime($value["fecha_creacion"]) . '</span></li><hr>';
                    }
                } else {
                    if ($value["visitado"] == 0) {
                        echo '<li id="clic' . $value["id"] . '" class="no_visitado"><i class="' . $IconModulo . '"></i><strong><font size=3> <a href="' . $UrlModulo . '"> Hoy es la fecha limite para esta <font color="' . $ColorModulo . '" size=3>' . ucfirst($value["entidad_tipo"]) . '</a></font></strong><span class="small italic"> ' . Util::nicetime($value["fecha_creacion"]) . '</span></li><hr>';
                    } else {
                        echo '<li id="clic' . $value["id"] . '" class="no_visitado"><i class="' . $IconModulo . '"></i><font size=3> <a href="' . $UrlModulo . '"> Hoy es la fecha limite para esta ' . ucfirst($value["entidad_tipo"]) . '</a></font><span class="small italic"> ' . Util::nicetime($value["fecha_creacion"]) . '</span></li><hr>';
                    }
                }
            }
        }
    }

    public static function consultadiariaoportunidades() {
        $comando = Yii::app()->db->createCommand()
                ->select("")
                ->from("oportunidad")
                ->where("fecha_fin = '" . date('Y-m-d') . "'");
        $datos = $comando->queryAll();
        $entidad = 'oportunidad';
        $tipo = Alerta::EVENTOHOY;
        if (count($datos) > 0) {
            $contar = 0;
            foreach ($datos as $key => &$value) {
                $entidadid = $datos[$contar]['id'];
                $usuario = $datos[$contar]['owner_id'];
                $registraralertadia = Alerta::registraralertadia($entidad, $entidadid, $usuario, Alerta::EVENTOHOY);
                $contar = $contar + 1;
            }
        }
    }

    public static function consultadiariacobranzas() {
        $comando = Yii::app()->db->createCommand()
                ->select("")
                ->from("cobranza")
                ->where("fecha_vencimiento = '" . date('Y-m-d') . "'");
        $datos = $comando->queryAll();
        $entidad = 'cobranza';
        $tipo = Alerta::EVENTOHOY;
        if (count($datos) > 0) {
            $contar = 0;
            foreach ($datos as $key => &$value) {
                $entidadid = $datos[$contar]['id'];
                $usuario = $datos[$contar]['owner_id'];
                $registraralertadia = Alerta::registraralertadia($entidad, $entidadid, $usuario, Alerta::EVENTOHOY);
                $contar = $contar + 1;
            }
        }
    }

    public static function consultadiariaevento() {
        $comando = Yii::app()->db->createCommand()
                ->select("")
                ->from("evento")
                ->where("fecha_inicio = '" . date('Y-m-d') . "'");
        $datos = $comando->queryAll();
        $entidad = 'evento';
        $tipo = Alerta::EVENTOHOY;
        if (count($datos) > 0) {
            $contar = 0;
            foreach ($datos as $key => &$value) {
                $entidadid = $datos[$contar]['id'];
                $usuario = $datos[$contar]['owner_id'];
                $registraralertadia = Alerta::registraralertadia($entidad, $entidadid, $usuario, Alerta::EVENTOHOY);
                $contar = $contar + 1;
            }
        }
    }
    
    public static function consultadiariaincidencia() {
        $comando = Yii::app()->db->createCommand()
                ->select("")
                ->from("incidencia")
                ->where("fecha_est_resolucion = '" . date('Y-m-d') . "'");
        $datos = $comando->queryAll();
        $entidad = 'incidencia';
        $tipo = Alerta::EVENTOHOY;
        if (count($datos) > 0) {
            $contar = 0;
            foreach ($datos as $key => &$value) {
                $entidadid = $datos[$contar]['id'];
                $usuario = $datos[$contar]['owner_id'];
                $registraralertadia = Alerta::registraralertadia($entidad, $entidadid, $usuario, Alerta::EVENTOHOY);
                $contar = $contar + 1;
            }
        }
    }
    public static function consultadiariatarea() {
        $comando = Yii::app()->db->createCommand()
                ->select("")
                ->from("tarea")
                ->where("fecha_fin = '" . date('Y-m-d') . "'");
        $datos = $comando->queryAll();
        $entidad = 'tarea';
        $tipo = Alerta::EVENTOHOY;
        if (count($datos) > 0) {
            $contar = 0;
            foreach ($datos as $key => &$value) {
                $entidadid = $datos[$contar]['id'];
                $usuario = $datos[$contar]['owner_id'];
                $registraralertadia = Alerta::registraralertadia($entidad, $entidadid, $usuario, Alerta::EVENTOHOY);
                $contar = $contar + 1;
            }
        }
    }

}

